'''
三大认证中的权限，认证成功后才会执行权限的操作
1、需要通过认证类返回的用户数据判断用户的类型
2、需要重写 has_permission方法，返回True代表用户有权限，返回False代表用户没有权限

'''
from rest_framework.permissions import BasePermission

#管理员和老板才有的权限
class  SuperAdminPermission(BasePermission):
    def has_permission(self,request,view):
        #view是视图类的对象，拿到视图类的东西
        #由于认证已经通过了，在request.user或request.auth中就可以拿到用户,前提是我们在认证返回的第一个数据是用户名
        role = request.auth.get('role',0)

        #因为在认证类中，返回第二个数据是一个字典，字典中保存了role的值，角色
        if role == 1 or role == 2:
            #超级管理员和管理员才有权限
            return True
            #return True代表能够访问，负责不能访问
        else:
            return False
#经理才有的权限
class  PartAdminPermission(BasePermission):
    def has_permission(self,request,view):
        #view是视图类的对象，拿到视图类的东西
        role = request.auth.get('role', False)
        if role == 3:
            #部门经理才能权限
            return True
            #return True代表能够访问，负责不能访问
        else:
            return False

#普通员工的权限
class  NormalStaffPermission(BasePermission):
    def has_permission(self,request,view):
        #view是视图类的对象，拿到视图类的东西
        role = request.auth.get('role', False)
        if role == 4:
            #部门经理才能权限
            return True
            #return True代表能够访问，负责不能访问
        else:
            return False
